import java.util.HashMap;
import java.util.Map;

public class MapTest {
    public static void main(String[] args) {
        // Map<键, 值> 键是唯一的，值可以重复
        Map<Integer, String> map = new HashMap<Integer, String>();
        // put() 将指定的值与此映射中的指定键关联
        map.put(1, "张三");
        map.put(2, "李四");
        map.put(3, "王五");
        System.out.println(map);// {1=张三, 2=李四, 3=王五}

        map.put(1, "张三丰");
        map.put(4, "王五");
        // key是不可重复的，value可重复的
        System.out.println(map);// {1=张三丰, 2=李四, 3=王五, 4=王五}
        map.put(null, "张三");
        map.put(null, "李四");
        // key可以为空，但只能有一个
        System.out.println(map);
        map.put(null, null);
        map.put(1, null);
        // value可以为空，可以有多个
        System.out.println(map);// {null=null, 1=null, 2=李四, 3=王五, 4=王五}

        // clear() 清空map中的key、value
        //map.clear();
        // System.out.println(map);

        // containsKey() 查找key是否存在
        System.out.println(map.containsKey(1));// true
        System.out.println(map.containsKey(-1));// false
        // containsValue() 查找value是否存在
        System.out.println(map.containsValue("李四"));// true
        System.out.println(map.containsValue("张三"));// false

        // get(key) 根据key获取相应的value值
        System.out.println(map.get(2));// 李四
        System.out.println(map.get(-1));// null

        // getOrDefault(key,默认值) 若取不到对应的值则返回默认值
        System.out.println(map.getOrDefault(2, "默认值"));// 李四
        System.out.println(map.getOrDefault(-1, "默认值"));// 默认值

        // isEmpty() 是否为空
        System.out.println(map.isEmpty());// false

        // size() key-value的数量(成对)
        System.out.println(map.size());// 5

        // remove(key) 移除key-value(成对) 返回删除的值
        System.out.println(map.remove(4));// 王五
        System.out.println(map);
        // remove(key,value) 移除key-value 返回false|true
        System.out.println(map.remove(1, "张三"));// false

    }
}
